home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / sneaka.act < prev    next >
Text File  |  1995-04-22  |  13KB  |  1 lines

  1. ; SNEAK ATTACK¢¢¢MODULE¢¢BYTE¢  CHRBASE=756,MAX,BKGRND=710,FATE=53770,LEVEL=[1],CURSIN=752,STICK=632,PS,LOUD=[0],INDX=[0],DOWNL=[0],DOWNR=[0],LOUD1=[0],¢  SND1=$D208,SND2=$D20F,FREQ=[169],WSYNC=$D40A,COLBK=$D018,NMIEN=$D40E,HARD=[15],CONSOL=53279¢¢¢CARD¢  SCRN=88,RAMSET,HIMEM=$2E5,SCORE=[0],COMP=[300],SDLST=560,VDSLST=512¢¢¢CARD ARRAY LINEPT(24)¢¢BYTE ARRAY¢  CHARSET,CHOPPERSTATUS(30),CHOPPERX(30),CHOPPERY(30),EXPX(60),EXPY(60),EXPSTATUS(60),TRSTATUS(30),TRX(30),TRY(30),MISSTATUS(30),¢  MISX(30),MISY(30),LL(20),RR(20),DLIST,¢  SHAPETABLE(0)=¢    [254  16 124  71 127  12  62   0¢     127   8  62 226 254  24 126   0¢      96  96  48  48  24  60 231 255¢      24  24  24  24  24  60 231 255¢       6   6  12  12  24  60 231 255¢     128  85  17  66  24 170  91 131¢      60 126 255 255 195  66  36  24¢      60  36  24 255  60  24  36 102¢       0   0   0   0   0   0   0   0¢      60  36  24 255  60  24  36 102 ¢      60  36 219 255  60  24  36 102 ¢      60  60  24  60  60  24  24  28¢      60  60  24  60  60  60 102 195]¢¢¢PROC DOWNLOAD()¢CARD INDEX¢BYTE VAL¢  RAMSET=(HIMEM-$400)&$FC00¢  CHRBASE=RAMSET RSH 8¢  HIMEM=RAMSET¢  FOR INDEX=0 TO 1023 DO¢    VAL=PEEK(57344+INDEX)¢    POKE(RAMSET+INDEX,VAL)¢  OD¢  CHARSET=RAMSET¢RETURN¢¢¢PROC DLINT()¢  [$48 $8A $48 $98 $48]¢  WSYNC=1¢  COLBK=50¢  [$68 $A8 $68 $AA $68 $40]¢  ¢¢PROC SCORELINE()¢  DLIST=SDLST ¢  VDSLST=DLINT¢  DLIST(27)=130¢  NMIEN=$C0¢RETURN¢¢¢PROC UPDATE()¢  POSITION(1,23)¢  PRINT("SCORE: ")¢  POSITION(8,23)¢  PRINTC(SCORE)¢  POSITION(18,23)¢  PRINT("LEVEL: ")¢  POSITION(25,23)¢  PRINTB(LEVEL)¢RETURN¢¢¢PROC TITLE()¢BYTE COLPF0=53270,COLPF1=53271,COLPF2=53273,COLPF3=53273,RTCLOCK=20,VCOUNT=54283¢  GRAPHICS(18)¢  POSITION(3,4)¢  PRINTD(6,"SNEAK ATTACK")¢  POSITION (8,5)¢  PRINTD(6,"BY")¢  POSITION(3,7)¢  PRINTD(6,"DAVID PLOTKIN")¢  POSITION(3,9)¢  PRINTD(6,"ספדצצ צקIJפק")¢  WHILE CONSOL<>6 DO¢    COLPF3=FATE¢    WSYNC=0¢    COLPF0=128-VCOUNT+RTCLOCK RSH 2¢    COLPF1=VCOUNT+RTCLOCK RSH 2¢  OD¢RETURN¢¢¢¢PROC GR0INIT()¢CARD XX¢  GRAPHICS(0)¢  CURSIN=1¢  PRINT(" ")¢  FOR XX=0 TO 23 DO¢    LINEPT(XX)=SCRN+(40*XX)¢  OD¢  FOR XX=0 TO 29 DO¢    CHOPPERSTATUS(XX)=0¢    CHOPPERX(XX)=0¢    CHOPPERY(XX)=0¢    MISX(XX)=0¢    MISY(XX)=0¢    MISSTATUS(XX)=0¢    TRSTATUS(XX)=0¢  OD¢  FOR XX=0 TO 59 DO¢    EXPSTATUS(XX)=0¢  OD¢  FOR XX=0 TO 19 DO¢    LL(XX)=0¢    RR(XX)=0¢  OD¢  BKGRND=0¢  UPDATE()¢RETURN¢¢¢¢PROC PLOT0(BYTE X,Y,CH)¢BYTE ARRAY LINE¢  LINE=LINEPT(Y)¢  LINE(X)=CH¢RETURN¢¢¢¢BYTE FUNC LOCATE0(BYTE X,Y)¢BYTE ARRAY LINE¢  LINE=LINEPT(Y)¢RETURN(LINE(X))¢¢¢¢PROC NOISE()¢  IF LOUD=0 AND LOUD1=0 AND FREQ=169 THEN¢    RETURN¢  FI¢  IF LOUD THEN¢    LOUD==-2¢    SOUND(0,90,8,LOUD)¢  FI¢  IF LOUD1 THEN¢    LOUD1==-2¢    SOUND(1,150,8,LOUD1)¢  FI¢  IF FREQ<168 THEN¢    FREQ==+8¢    SOUND(2,FREQ,10,4)¢  ELSE¢    FREQ=169¢    SOUND(2,0,0,0)¢  FI¢RETURN¢¢¢¢PROC HITCHUTE(BYTE WH)¢BYTE LP¢  FOR LP=0 TO 29 DO¢    IF MISX(WH)=TRX(LP) AND (MISY(WH)=TRY(LP) OR MISY(WH)=TRY(LP)+1) THEN TRSTATUS(LP)=2¢      PLOT0(TRX(LP),TRY(LP),0)¢      PLOT0(TRX(LP),TRY(LP)+1,10)¢      PLOT0(TRX(LP),TRY(LP)+2,0)¢      EXIT¢    FI¢  OD¢  IF TRY(LP) LSH 3 < FREQ THEN FREQ=TRY(LP) LSH 3¢  FI¢RETURN¢¢¢¢PROC HITMAN(BYTE WH)¢BYTE LP¢  FOR LP=0 TO 29 DO¢    IF MISX(WH)=TRX(LP) AND (MISY(WH)=TRY(LP)+1 OR MISY(WH)=TRY(LP)+2) THEN¢      TRSTATUS(LP)=3¢      PLOT0(TRX(LP),TRY(LP)+1,6)¢      PLOT0(TRX(LP),TRY(LP),0)¢      PLOT0(TRX(LP),TRY(LP)+2,0)¢    FI¢  OD¢  LOUD1=12¢RETURN¢   ¢¢¢PROC EXPLODECHOPPER(BYTE LP)¢BYTE LQ¢  FOR LQ=0 TO 59 STEP 2 DO¢    IF EXPSTATUS(LQ)=0 THEN¢      EXPSTATUS(LQ)=1¢      EXPSTATUS(LQ+1)=1¢      EXPX(LQ)=CHOPPERX(LP)¢      EXPX(LQ+1)=CHOPPERX(LP)+1¢      EXPY(LQ)=CHOPPERY(LP)¢      EXPY(LQ+1)=CHOPPERY(LP)¢      CHOPPERSTATUS(LP)=0¢      PLOT0(EXPX(LQ),EXPY(LQ),6)¢      PLOT0(EXPX(LQ+1),EXPY(LQ+1),6)¢      EXIT¢    FI¢  OD¢RETURN¢ ¢¢PROC HITCHOPPER(BYTE WH)¢BYTE LP¢  FOR LP=0 TO 29 DO¢    IF MISY(WH)=CHOPPERY(LP) AND (MISX(WH)=CHOPPERX(LP) OR MISX(WH)=CHOPPERX(LP)+1) THEN¢      EXPLODECHOPPER(LP)¢      EXIT¢    FI¢  OD¢  LOUD=12¢RETURN¢¢¢PROC MISSILEHIT(BYTE WH)¢BYTE DUM¢  DUM=LOCATE0(MISX(WH),MISY(WH))¢  IF DUM=0 THEN¢    PLOT0(MISX(WH),MISY(WH),84)¢    RETURN¢  FI¢  MISSTATUS(WH)=0¢  IF DUM=1 OR DUM=2 THEN¢    HITCHOPPER(WH)¢    SCORE==+1¢  ELSEIF (DUM=7 AND INDX<6 OR DUM=8 AND INDX>3) THEN¢    HITCHUTE(WH)¢    SCORE==+2¢  ELSEIF (DUM=8 AND INDX<4 OR DUM=9 AND INDX>1) THEN¢    HITMAN(WH)¢    SCORE==+1¢  FI¢RETURN¢¢¢PROC MODIFY()¢CARD XX¢  FOR XX=0 TO 103 DO¢    CHARSET(XX+8)=SHAPETABLE(XX)¢  OD¢RETURN¢¢¢PROC LAUNCHTROOPER(BYTE WH)¢BYTE LP¢  IF FATE>240-(LEVEL LSH 1) THEN¢    FOR LP=0 TO 29 DO¢      IF TRSTATUS(LP)=0 THEN TRSTATUS(LP)=1¢        TRX(LP)=CHOPPERX(WH)¢        IF TRX(LP)=0 THEN¢          TRX(LP)=1¢        FI¢        TRY(LP)=CHOPPERY(WH)+1¢        PLOT0(TRX(LP),TRY(LP),7)¢        PLOT0(TRX(LP),TRY(LP)+1,8)¢        PLOT0(TRX(LP),TRY(LP)+2,9)¢        EXIT¢      FI¢    OD¢  FI¢RETURN¢¢¢PROC ERASECHOPPER(BYTE WH)¢  PLOT0(CHOPPERX(WH),CHOPPERY(WH),0)¢  PLOT0(CHOPPERX(WH)+1,CHOPPERY(WH),0)¢  CHOPPERSTATUS(WH)=0¢  CHOPPERX(WH)=0¢  CHOPPERY(WH)=0¢RETURN¢¢¢PROC DRAWCHOPPER(BYTE WH)¢  PLOT0(CHOPPERX(WH),CHOPPERY(WH),1)¢  PLOT0(CHOPPERX(WH)+1,CHOPPERY(WH),2)¢RETURN¢¢¢PROC CLEARSCREEN()¢BYTE LP¢  FOR LP=0 TO 29¢  DO¢    IF CHOPPERSTATUS(LP) THEN¢      ERASECHOPPER(LP)¢    FI¢    IF TRSTATUS(LP) THEN TRSTATUS(LP)=0¢      PLOT0(TRX(LP),TRY(LP),0)¢      PLOT0(TRX(LP),TRY(LP)+1,0)¢      PLOT0(TRX(LP),TRY(LP)+2,0)¢    FI¢    IF MISSTATUS(LP)=1 THEN MISSTATUS(LP)=0¢      PLOT0(MISX(LP),MISY(LP),0)¢    FI¢  OD¢  FOR LP=0 TO 59 STEP 2 DO¢    IF EXPSTATUS(LP)=1 THEN EXPSTATUS(LP)=0¢      EXPSTATUS(LP+1)=0¢      PLOT0(EXPX(LP),EXPY(LP),0)¢      PLOT0(EXPX(LP+1),EXPY(LP+1),0)¢    FI¢  OD¢RETURN¢¢¢PROC MOVECHOPPER()¢BYTE LP,PS=[0]¢  FOR LP=0 TO 29 DO¢      IF CHOPPERSTATUS(LP)=1 THEN IF CHOPPERX(LP)=38 THEN ERASECHOPPER(LP)¢      ELSE¢        PLOT0(CHOPPERX(LP),CHOPPERY(LP),0)¢        CHOPPERX(LP)==+1¢        DRAWCHOPPER(LP)¢        LAUNCHTROOPER(LP)¢      FI¢    FI¢    IF CHOPPERSTATUS(LP)=2 THEN IF CHOPPERX(LP)=0 THEN ERASECHOPPER(LP)¢      ELSE¢        PLOT0(CHOPPERX(LP)+1,CHOPPERY(LP),0)¢        CHOPPERX(LP)==-1¢        DRAWCHOPPER(LP)¢        LAUNCHTROOPER(LP)¢      FI¢    FI¢  OD¢  IF PS=0 THEN CHARSET(8)=56¢    CHARSET(16)=28¢    PS=1¢  ELSE¢    PS=0¢    CHARSET(8)=254¢    CHARSET(16)=127¢  FI¢RETURN¢¢¢PROC LAUNCHCHOPPER()¢BYTE LP¢  IF FATE>230-(LEVEL LSH 1) THEN FOR LP=0 TO 29 DO¢      IF CHOPPERSTATUS(LP)=0 THEN CHOPPERY(LP)=RAND(HARD)¢        IF FATE>128 THEN CHOPPERX(LP)=38¢          CHOPPERSTATUS(LP)=2¢        ELSE¢          CHOPPERX(LP)=0¢          CHOPPERSTATUS(LP)=1¢        FI¢        DRAWCHOPPER(LP)¢        EXIT¢      FI¢    OD¢  FI¢RETURN¢¢¢PROC DRAWBASE()¢BYTE LP¢  FOR LP=19 TO 21 DO¢    PLOT0(LP,22,128)¢  OD¢  PLOT0(20,21,4)¢RETURN¢¢¢PROC AIMGUN()¢  IF STICK=11 THEN PS=3¢  ELSEIF STICK=7 THEN PS=5¢  ELSE¢    PS=4¢  FI¢  PLOT0(20,21,PS)¢RETURN¢¢¢PROC SHOOT()¢BYTE TRIG=644,LP,FLG=[0]¢  IF TRIG=1 OR FLG=0 THEN FLG=1¢    RETURN¢  FI¢  FOR LP=0 TO 29 DO¢    IF MISSTATUS(LP)=0 THEN MISSTATUS(LP)=1¢      MISY(LP)=20¢      IF PS=3 THEN MISX(LP)=19¢      ELSEIF PS=5 THEN MISX(LP)=21¢      ELSE¢        MISX(LP)=20¢      FI¢      MISSILEHIT(LP)¢      EXIT¢    FI¢  OD¢  FLG=0¢RETURN¢¢¢PROC MOVESHOTS()¢BYTE LP¢  FOR LP=0 TO 29 DO¢    IF MISSTATUS(LP)=1 THEN PLOT0(MISX(LP),MISY(LP),0)¢      IF STICK=11 THEN MISX(LP)==-1¢      ELSEIF STICK=7 THEN MISX(LP)==+1¢      ELSE MISY(LP)==-1¢      FI¢      IF (MISX(LP)<>39 AND MISY(LP)<>255 AND MISX(LP)<>0) THEN MISSILEHIT(LP)¢      ELSE MISSTATUS(LP)=0¢      FI¢    FI¢  OD¢RETURN¢¢¢PROC MOVEEXPLOSIONS()¢BYTE LP¢  FOR LP=0 TO 59 STEP 2 DO¢    IF EXPSTATUS(LP)=1 THEN PLOT0(EXPX(LP),EXPY(LP),0)¢      PLOT0(EXPX(LP+1),EXPY(LP+1),0)¢      EXPY(LP)==+1¢      EXPY(LP+1)==+1¢      EXPX(LP)==-1¢      EXPX(LP+1)==+1¢      IF EXPY(LP)<>22 AND EXPX(LP)<>0 AND EXPX(LP+1)<>39 THEN ¢        PLOT0(EXPX(LP),EXPY(LP),6)¢        PLOT0(EXPX(LP+1),EXPY(LP+1),6)¢      ELSE¢        EXPSTATUS(LP)=0¢        EXPSTATUS(LP+1)=0¢      FI¢    FI¢  OD¢RETURN¢¢¢PROC BASEEXPLODE()¢BYTE ARRAY ENDX(0)=[16 24 17 23 20],ENDY(0)=[22 22 19 19 17]¢BYTE LP,TIME=20¢  COLOR=38¢  FOR LP=0 TO 4 DO¢    PLOT(20,22)¢    D